package cliente;

import java.util.ArrayList;
import java.util.Date;

import base_de_dados.Entidade;
import base_de_dados.GestorBD;

public class Assistencia implements Entidade {
    private LinhaFactura linha_factura;
    private Cliente cliente;
    private boolean resolvida = false;
    private Date data;
    private int id;
    
    public Assistencia(int id, LinhaFactura linha_factura, Cliente cliente) {
		super();
		this.linha_factura = linha_factura;
		this.cliente = cliente;
		this.data = new Date();
		this.id = id;
	}
	
    public Date getData() {
		return data;
	}

	public boolean isResolvida() {
		return resolvida;
	}
	public void setResolvida(boolean resolvida) {
		this.resolvida = resolvida;
	}
	public LinhaFactura getLinha_factura() {
		return linha_factura;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@Override
	public ArrayList<Object> getListaValores() {
		ArrayList<Object> list = new ArrayList<Object>();
		list.add(linha_factura.getId());
		list.add(cliente.getId());
		list.add(resolvida);
		return list;
	}

	@Override
	public boolean update() {
		GestorBD bd = Gestores.Gestores.getGestor_bd();
		if(bd != null){
			bd.update(this);
			boolean result = this.cliente.update() && this.linha_factura.update();
			return result;
		}
		return false;
	}

	@Override
	public boolean remover() {
		GestorBD bd = Gestores.Gestores.getGestor_bd();
		if(bd != null){
			bd.remove(this);
			return true;
		}
		return false;
	}

	@Override
	public ArrayList<String> getListaParametros() {
		ArrayList<String> list = new ArrayList<String>();
		list.add("linha_factura");
		list.add("cliente");
		list.add("resolvida");
		return list;
	}

	@Override
	public String getSearchString() {
		String search = "";
		if(linha_factura != null){
			search += "linha_factura = " + linha_factura.getId();
		}else{
			search += "linha_factura >= " + 0;
		}
		if(cliente != null){
			search += " AND cliente = " + cliente.getId();
		}else{
			search += " AND cliente >= " + 0;
		}
			
		return search;
	}

}
